package com.uzai.console.service.tb.tborder;

import com.uzai.console.component.excel.template.TbRefundOrderExcelDemo;
import com.uzai.console.dto.tb.tborder.TbOrderApiDownLoadDto;
import com.uzai.console.dto.tb.tborder.TbOrderDownLoadDto;
import com.uzai.console.dto.tb.tborder.TbOrderExportResultDto;
import com.uzai.console.dto.tb.tborder.TbOrderQuery;
import com.uzai.console.entity.TbOrder;
import com.uzai.console.vo.exportinfo.ExportAmountVo;

import java.util.List;

/**
 * @Auther: liuqi
 * @Date: 2021/08/27 11:23
 * @Description:
 */
public interface TbOrderSyncService {

    /**
     * 手动下载所有单个淘宝联盟订单
     *
     * @param tbOrderDownLoadDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void downloadOrder(TbOrderDownLoadDto tbOrderDownLoadDto, Long tbTokenId);

    /**
     * 手动下载单个淘宝联盟订单(订单不入订单库，直接通过API拉取到业务库)
     *
     * @param tbOrderDownLoadDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void downloadOrder_notInStock(TbOrderDownLoadDto tbOrderDownLoadDto, Long tbTokenId);

    /**
     * 通过API手动下载所有单个淘宝联盟订单
     *
     * @param tbOrderApiDownLoadDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void downloadOrderApi(TbOrderApiDownLoadDto tbOrderApiDownLoadDto, Long tbTokenId);

    /**
     * 手动下载所有单个淘宝联盟订单(先下载到订单库，然后同步到业务库)
     *
     * @param tbOrderDownLoadDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void downloadOrderListSync(TbOrderDownLoadDto tbOrderDownLoadDto);

    /**
     * 异步手动下载多个淘宝联盟订单（订单不入库订单库，直接通过API接口拉取订单到业务库）
     *
     * @param tbOrderDownLoadDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void downloadOrderListSync_notInStock(TbOrderDownLoadDto tbOrderDownLoadDto);

    /**
     * 通过API手动下载所有淘宝联盟订单
     *
     * @param tbOrderDownLoadByApiDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void downloadOrderApiListSync(TbOrderApiDownLoadDto tbOrderDownLoadByApiDto);

    /**
     * 远程调用订单库API，手动下载淘宝订单
     *
     * @param tbOrder
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrder(TbOrder tbOrder);

    /**
     * 远程调用订单库API，更新7天前未收货订单
     *
     * @param merId
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderUnReceivedListSync(Long merId);

    /**
     * 远程调用订单库API，更新day天前未收货订单
     *
     * @param merId
     * @param day
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderUnReceivedListSync(Long merId, int day);

    /**
     * 远程调用订单库API，更新day天前未收货订单
     *
     * @param merId
     * @param startTime
     * @param endTime
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderUnReceivedListSync(Long merId, Integer startTime, Integer endTime, Long userId);

    /**
     * 远程调用订单库API，更新day天前未收货订单-直接结算
     *
     * @param merId
     * @param startTime
     * @param endTime
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderUnReceivedListSync_settle(Long merId, Integer startTime, Integer endTime, Long userId);

    /**
     * 远程调用订单库API，更新day天前订单-已冻结
     *
     * @param merId
     * @param day
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderFreezedListSync(Long merId, int day);

    /**
     * 远程调用订单库API，更新day天前订单-已冻结
     *
     * @param merId
     * @param startTime
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderFreezedListSync(Long merId, Integer startTime, Integer endTime, Long userId);

    /**
     * 远程调用订单库API，更新day天前冻结订单-直接结算
     *
     * @param merId
     * @param startTime
     * @param endTime
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderFreezedListSync_settle(Long merId, Integer startTime, Integer endTime, Long userId);

    /**
     * 远程调用订单库API，更新day天前维权中订单
     *
     * @param merId
     * @param day
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderRefundingListSync(Long merId, int day);

    /**
     * 远程调用订单库API，更新day前维权中的订单
     *
     * @param merId
     * @param startTime
     * @param endTime
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderRefundingListSync(Long merId, Integer startTime, Integer endTime, Long userId);


    /**
     * 远程调用订单库API，更新维权中订单-直接结算
     *
     * @param merId
     * @param startTime
     * @param endTime
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateTbOrderRefundingListSync_settle(Long merId, Integer startTime, Integer endTime, Long userId);


    /**
     * 异步上传淘宝维权订单
     *
     * @param tbRefundOrderExcelDemoList
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void uploadTbRefundOrderSync(List<TbRefundOrderExcelDemo> tbRefundOrderExcelDemoList);

    /**
     * 修改淘宝未收货订单为已结算(只改订单状态)
     *
     * @param merId
     * @param day
     * @param status 订单修改之后的状态（2-失效；1-结算）
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void uploadTbOrderSettingSync(Long merId, int day, int status);

    void uploadTbOrderSettingSync(Long merId, int day, int status, List<Integer> sourceStatus);

    /**
     * 淘宝订单查询结果导出文件前检验接口
     *
     * @param tbOrderQuery
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    ExportAmountVo getExportAmount(TbOrderQuery tbOrderQuery);

    /**
     * 异步导出淘宝订单
     *
     * @param tbOrderExportResultDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void exportTbOrderSync(TbOrderExportResultDto tbOrderExportResultDto);
}
